<?php

/**
 * Classe représentant une fiche bilan d'action de communication.
 * @author CHAGNON Laura, BALMAND Clémence
 * @since 25 septembre 2013
 * @version 1.0
 */

class FicheBilanAction
{
		/*Attributs*/
	/**
	 * Identifiant de la fiche
	 * @var integer
	 */
	private $_id;
	
	/**
	 * Action liée à la fiche
	 * @var int
	 */
	private $_id_action;
	
	/**
	 * Travail effectué pour l'action (seulement les forums)
	 * @var string
	 */
	private $_travailEffectue;
	
	/**
	 * Point positif de l'action
	 * @var string
	 */
	private $_pointPositif;
	
	/**
	 * Point négatif de l'action
	 * @var string
	 */
	private $_pointNegatif;
	
	/**
	 * Bon a savoir sur l'action
	 * @var string
	 */
	private $_bonASavoir;
	
	/**
	 * Suggestion  pour l'action
	 * @var string
	 */
	private $_suggestion;
	
	/**
	 * Nombre d'étudiants ayant confirmé la fiche
	 * @var int
	 */
	private $_nb_confirm;
	
	/**
	 * Etat de la fiche
	 * @var int
	 */
	private $_etat;
	
	
	/*Constructeur */
	
	public function __construct()
	{
	$args = func_get_args();

		switch(func_num_args())
		{
			case 1 : // juste l'id de la fiche forum.
				$this->set_id_action($args[0]);
				break;
			case 5 : // ID_ACTION_FICHE_BILAN_ACTION, POINT_POSITIF_FICHE_BILAN_ACTION, POINT_NEGATIF_FICHE_BILAN_ACTION, BON_A_SAVOIR_FICHE_BILAN_ACTION,SUGGESTION_FICHE_BILAN_ACTION 
				$this->set_id_action($args[0]);
				$this->set_pointPositif($args[1]);
				$this->set_pointNegatif($args[2]);
				$this->set_bonASavoir($args[3]);
				$this->set_suggestion($args[4]);
				break;
			case 6 : // ID_ACTION_FICHE_BILAN_ACTION, TRAVAIL_EFFECTUE_FICHE_BILAN_ACTION, POINT_POSITIF_FICHE_BILAN_ACTION, POINT_NEGATIF_FICHE_BILAN_ACTION, BON_A_SAVOIR_FICHE_BILAN_ACTION,SUGGESTION_FICHE_BILAN_ACTION
				$this->set_id_action($args[0]);
				$this->set_travailEffectue($args[1]);
				$this->set_pointPositif($args[2]);
				$this->set_pointNegatif($args[3]);
				$this->set_bonASavoir($args[4]);
				$this->set_suggestion($args[5]);
				break;
			default:
				trigger_error('Constructeur de Fiche bilan action avec ' + func_num_args() + ' non défini.');
				break;
		}
	}
	
	/* Méthodes BDD */
	
	public function getOneFicheBilanAction()
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query('SELECT '.ID_FICHE_BILAN_ACTION.', '.TRAVAIL_EFFECTUE_FICHE_BILAN_ACTION.', '.ID_ACTION_FICHE_BILAN_ACTION.', '.POINT_POSITIF_FICHE_BILAN_ACTION.', '.POINT_NEGATIF_FICHE_BILAN_ACTION.', '.BON_A_SAVOIR_FICHE_BILAN_ACTION.', '.SUGGESTION_FICHE_BILAN_ACTION.', '.NB_CONFIRM_FICHE_BILAN_ACTION.', '.ETAT_FICHE_BILAN_ACTION.'
										FROM '.TABLE_FICHE_BILAN_ACTION.' 
										WHERE '.ID_ACTION_FICHE_BILAN_ACTION.' = \''.$this->get_id_action().'\'');
			
			$d = $donnees->fetch();
			$donnees->closeCursor();
			$this->set_id($d[ID_FICHE_BILAN_ACTION]);
			$this->set_travailEffectue($d[TRAVAIL_EFFECTUE_FICHE_BILAN_ACTION]);
			$this->set_pointPositif($d[POINT_POSITIF_FICHE_BILAN_ACTION]);
			$this->set_pointNegatif($d[POINT_NEGATIF_FICHE_BILAN_ACTION]);
			$this->set_bonASavoir($d[BON_A_SAVOIR_FICHE_BILAN_ACTION]);
			$this->set_suggestion($d[SUGGESTION_FICHE_BILAN_ACTION]);
			$this->set_nb_confirm($d[NB_CONFIRM_FICHE_BILAN_ACTION]);
			$this->set_etat($d[ETAT_FICHE_BILAN_ACTION]);
	}
	
	public function getOneFicheBilanActionFromArchive()
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query('SELECT '.ID_FICHE_BILAN_ACTION.', '.TRAVAIL_EFFECTUE_FICHE_BILAN_ACTION.', '.ID_ACTION_FICHE_BILAN_ACTION.', '.POINT_POSITIF_FICHE_BILAN_ACTION.', '.POINT_NEGATIF_FICHE_BILAN_ACTION.', '.BON_A_SAVOIR_FICHE_BILAN_ACTION.', '.SUGGESTION_FICHE_BILAN_ACTION.'
										FROM '.TABLE_FICHE_BILAN_ACTION.'_archive
										WHERE '.ID_ACTION_FICHE_BILAN_ACTION.' = \''.$this->get_id_action().'\'');
			
		$d = $donnees->fetch();
		$donnees->closeCursor();
		$this->set_id($d[ID_FICHE_BILAN_ACTION]);
		$this->set_travailEffectue($d[TRAVAIL_EFFECTUE_FICHE_BILAN_ACTION]);
		$this->set_pointPositif($d[POINT_POSITIF_FICHE_BILAN_ACTION]);
		$this->set_pointNegatif($d[POINT_NEGATIF_FICHE_BILAN_ACTION]);
		$this->set_bonASavoir($d[BON_A_SAVOIR_FICHE_BILAN_ACTION]);
		$this->set_suggestion($d[SUGGESTION_FICHE_BILAN_ACTION]);
	}
	
	public static function verifFicheBilanAction($tacheRealise, $echeance, $responsable, $natureDepense, $budgetDepense, $fournisseur, $natureRecette, $budgetRecette,$pointPositif, $pointNegatif,$bonASavoir,$suggestion)
	{
		$erreur=0;
		if(!empty($tacheRealise))
		{
			foreach($tacheRealise as $t)
			{
				if(empty($t))
				{
					$erreur=1;
				}
			}
			if(!empty($echeance))
			{
				foreach($echeance as $t)
				{
					if(empty($t))
					{
						$erreur=1;
					}
				}
				if(!empty($responsable))
				{
					foreach($responsable as $t)
					{
						if(empty($t))
						{
							$erreur=1;
						}
					}
					if(!empty($natureDepense))
					{
						foreach($natureDepense as $t)
						{
							if(empty($t))
							{
								$erreur=1;
							}
						}
						if(!empty($budgetDepense))
						{
							foreach($budgetDepense as $t)
							{
								if(empty($t))
								{
									$erreur=1;
								}
							}
							if(!empty($fournisseur))
							{
								foreach($fournisseur as $t)
								{
									if(empty($t))
									{
										$erreur=1;
									}
								}
								if(!empty($natureRecette))
								{
									foreach($natureRecette as $t)
									{
										if(empty($t))
										{
											$erreur=1;
										}
									}
									if(!empty($budgetRecette))
									{
										foreach($budgetRecette as $t)
										{
											if(empty($t))
											{
												$erreur=1;
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		if($erreur == 1)
			return false;
		else
			return true;
	}
	
	public function saveOneFicheBilanAction()
	{
		if($this->get_pointNegatif()==null)
			$negatif="null";
		else
			$negatif= '"'.$this->get_pointNegatif().'"';
		if($this->get_pointPositif()==null)
			$positif="null";
		else
			$positif= '"'.$this->get_pointPositif().'"';
		if($this->get_bonASavoir()==null)
			$bonSavoir="null";
		else
			$bonSavoir= '"'.$this->get_bonASavoir().'"';
		if($this->get_suggestion()==null)
			$suggestion="null";
		else
			$suggestion= '"'.$this->get_suggestion().'"';
		$bdd = PDO2::getInstance();
	
		if($this->get_travailEffectue()==null)
			$result = $bdd->exec('INSERT INTO '.TABLE_FICHE_BILAN_ACTION.' ('.ID_ACTION_FICHE_BILAN_ACTION.', '.POINT_POSITIF_FICHE_BILAN_ACTION.', '.POINT_NEGATIF_FICHE_BILAN_ACTION.', '.BON_A_SAVOIR_FICHE_BILAN_ACTION.', '.SUGGESTION_FICHE_BILAN_ACTION.', '.NB_CONFIRM_FICHE_BILAN_ACTION.', '.ETAT_FICHE_BILAN_ACTION.')
					VALUES ('.$this->get_id_action().', '.$positif.', '.$negatif.', '.$bonSavoir.', '.$suggestion.', 0, 0)');
		else 
			$result = $bdd->exec('INSERT INTO '.TABLE_FICHE_BILAN_ACTION.' ('.ID_ACTION_FICHE_BILAN_ACTION.', '.TRAVAIL_EFFECTUE_FICHE_BILAN_ACTION.', '.POINT_POSITIF_FICHE_BILAN_ACTION.', '.POINT_NEGATIF_FICHE_BILAN_ACTION.', '.BON_A_SAVOIR_FICHE_BILAN_ACTION.', '.SUGGESTION_FICHE_BILAN_ACTION.', '.NB_CONFIRM_FICHE_BILAN_ACTION.', '.ETAT_FICHE_BILAN_ACTION.')
					VALUES ('.$this->get_id_action().', "'.$this->get_travailEffectue().'", '.$positif.', '.$negatif.', '.$bonSavoir.', '.$suggestion.', 0, 0)');
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public function modifOneFicheBilanAction()
	{
		if($this->get_pointNegatif() == null)
			$negatif = "null";
		else
			$negatif = '"'.$this->get_pointNegatif().'"';
		
		if($this->get_pointPositif() == null)
			$positif = "null";
		else
			$positif = '"'.$this->get_pointPositif().'"';
		
		if($this->get_bonASavoir() == null)
			$bonSavoir ="null";
		else
			$bonSavoir= '"'.$this->get_bonASavoir().'"';
		
		if($this->get_suggestion() == null)
			$suggestion = "null";
		else
			$suggestion = '"'.$this->get_suggestion().'"';
		
		$bdd = PDO2::getInstance();
		
		if($this->get_travailEffectue()==null)
			$result = $bdd->exec('UPDATE '.TABLE_FICHE_BILAN_ACTION.' 
							  SET '.POINT_POSITIF_FICHE_BILAN_ACTION.' = '.$positif.', '.POINT_NEGATIF_FICHE_BILAN_ACTION.' = '.$negatif.', '.BON_A_SAVOIR_FICHE_BILAN_ACTION.' = '.$bonSavoir.', '.SUGGESTION_FICHE_BILAN_ACTION.' = '.$suggestion.' 
							  WHERE '.ID_ACTION_FICHE_BILAN_ACTION.' = '.$this->get_id_action());
		else 
			$result = $bdd->exec('UPDATE '.TABLE_FICHE_BILAN_ACTION.'
					SET '.TRAVAIL_EFFECTUE_FICHE_BILAN_ACTION.' = '.$this->get_travailEffectue().', '.POINT_POSITIF_FICHE_BILAN_ACTION.' = '.$positif.', '.POINT_NEGATIF_FICHE_BILAN_ACTION.' = '.$negatif.', '.BON_A_SAVOIR_FICHE_BILAN_ACTION.' = '.$bonSavoir.', '.SUGGESTION_FICHE_BILAN_ACTION.' = '.$suggestion.'
					WHERE '.ID_ACTION_FICHE_BILAN_ACTION.' = '.$this->get_id_action());
		
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public function ajoutConfirmOneFicheBilanAction()
	{
		$adc = new ActionDeCommunication($this->get_id_action());
		$adc->getOneADC();
		$nbEtu= count($adc->get_etudiants_ADC());
		$nbConfirm=$this->get_nb_confirm()+1;
		if($nbConfirm == $nbEtu)
			$etat=1;
		else
			$etat=0;
		$bdd = PDO2::getInstance();
		$result = $bdd->exec('UPDATE '.TABLE_FICHE_BILAN_ACTION.
				' SET '.NB_CONFIRM_FICHE_BILAN_ACTION.' = '.$nbConfirm.' , '.ETAT_FICHE_BILAN_ACTION.' = '.$etat.
				' WHERE '.ID_ACTION_FICHE_BILAN_ACTION.' = '.$this->get_id_action());
	}
	
	public function getConfirm()
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(	'
				SELECT '.ID_ETU_PARTICIPE.'
				FROM '.TABLE_PARTICIPE.'
				WHERE '.ID_ADC_PARTICIPE.' = '.$this->get_id_action().'
				AND '.CONFIRM_FICHE_ADC
		);
	
		return $donnees->fetchAll();
	}
	
	/*Getters et Setters*/
	
	/**
	 * Fonction permettant de récupérer l'identifiant de la fiche d'action
	 * @return int
	 */
	public function get_id()
	{
		return $this->_id;
	}
	
	/**
	 * Fonction permettant de récupérer l'identifiant de la fiche d'action
	 * @return int
	 */
	public function set_id($id)
	{
		$this->_id=$id;
	}	
	
	/**
	 * Fonction permettant de récupérer l'action liée à la fiche
	 * @return int
	 */
	public function get_id_action()
	{
		return $this->_id_action;
	}
	
	/**
	 * Fonction permettant de modifier l'action liée à la fiche
	 * @param int
	 */
	public function set_id_action($action)
	{
		$this->_id_action=$action;
	}
	
	/**
	 * Fonction permettant de modifier le travail effectué de l'action
	 * @param string
	 */
	public function get_travailEffectue()
	{
		return $this->_travailEffectue;
	}
	
	/**
	 * Fonction permettant de modifier le travail effectué de l'action
	 * @param string
	 */
	public function set_travailEffectue($travailEffectue)
	{
		$this->_travailEffectue=$travailEffectue;
	}
	
	/**
	 * Fonction permettant de modifier les points positifs de l'action
	 * @param string
	 */
	public function get_pointPositif()
	{
		return $this->_pointPositif;
	}
	
	/**
	 * Fonction permettant de modifier les points positifs de l'action
	 * @param string 
	 */	
	public function set_pointPositif($pointPositif)
	{
		$chaine=str_replace("\n", "<br/>", $pointPositif);
		$this->_pointPositif=$chaine;
	}

	/**
	 * Fonction permettant de récupérer les points négatifs de l'action
	 * @param string
	 */
	public function get_pointNegatif()
	{
		return $this->_pointNegatif;
	}
	
	/**
	 * Fonction permettant de modifier les points négatifs de l'action
	 * @param string
	 */
	public function set_pointNegatif($pointNegatif)
	{
		$chaine=str_replace("\n", "<br/>", $pointNegatif);
		$this->_pointNegatif=$chaine;
	}
	
	/**
	 * Fonction permettant de récupérer ce qui est bon a savoir sur l'action
	 * @param string
	 */
	public function get_bonASavoir()
	{
		return $this->_bonASavoir;
	}
	
	/**
	 * Fonction permettant de modifier ce qui est bon a savoir sur l'action
	 * @param string
	 */
	public function set_bonASavoir($bonASavoir)
	{
		$chaine=str_replace("\n", "<br/>", $bonASavoir);
		$this->_bonASavoir=$chaine;
	}
	
	/**
	 * Fonction permettant de récupérer les suggestions de l'action
	 * @param string
	 */
	public function get_suggestion()
	{
		return $this->_suggestion;
	}
	
	/**
	 * Fonction permettant de modifier les suggestions de l'action
	 * @param string
	 */
	public function set_suggestion($suggestion)
	{
		$chaine=str_replace("\n", "<br/>", $suggestion);
		$this->_suggestion=$chaine;
	}
	
	/**
	 * Fonction permettant de récupérer le nombre d'étudiants ayant confirmé la fiche action
	 * @param int
	 */
	public function get_nb_confirm()
	{
		return $this->_nb_confirm;
	}
	
	/**
	 * Fonction permettant de modifier le nombre d'étudiants ayant confirmé la fiche action
	 * @param int
	 */
	public function set_nb_confirm($nb_confirm)
	{
		$this->_nb_confirm=$nb_confirm;
	}
	
	/**
	 * Fonction permettant de récupérer l'état de la fiche action
	 * @param int
	 */
	public function get_etat()
	{
		return $this->_etat;
	}
	
	/**
	 * Fonction permettant de modifier l'état de la fiche action
	 * @param int
	 */
	public function set_etat($etat)
	{
		$this->_etat=$etat;
	}
	
}
	
	
?>